In a communications network, information (such as a data stream or data packets) may be transmitted from a source to a destination. The information may be transmitted as a data flow, which carries the information between the source and the destination along a path. The source and the destination may be nodes in the network. A node represents a device that communicates with the network and through which information may pass, originate, and/or terminate. The nodes may be, for example: computing devices such as personal computers, phones, or tablets; servers such as email servers, data servers, or web servers; routers; switches; reconfigurable optical add drop multiplexers (ROADM); and other networking devices. The data flows may be transmitted over paths in the network. Each path is made up on of one or more links (or edges). A link or edge refers to a connection between two adjacent nodes. Each link is associated with a capacity or bandwidth, which represents the amount of data that the link is capable of carrying at any given time.
As more nodes, data flows, and links are added to the network, it becomes increasingly complicated to allocate paths for different data flows. Choosing the appropriate amount of data to allocate to a given link and balancing the bandwidth of the links in the network with the desire to route each data flow in a fast, efficient manner are difficult problems for traffic engineering systems.